package com.burges.net.dataStream.windows.evictors;

import org.apache.flink.metrics.MetricGroup;
import org.apache.flink.streaming.api.windowing.evictors.Evictor;
import org.apache.flink.streaming.api.windowing.windows.Window;
import org.apache.flink.streaming.runtime.operators.windowing.TimestampedValue;

import java.io.Serializable;

/**
 * 创建人    BurgessLee
 * 创建时间   2020/2/3
 * 描述     Evictor代码注释内容
 */
public interface EvictorDemo<T, W extends Window> extends Serializable {
    // elements代表在当前窗口中的所有的数据元素
    // 定义WindowsFunction出发之前的数据剔除操作
    void evictBefore(Iterable<TimestampedValue<T>> elements, int size, W window, Evictor.EvictorContext evictorContext);

    // 定义WindowsFunction出发之后的数据剔除操作
    void evictAfter(Iterable<TimestampedValue<T>> elements, int size, W window, Evictor.EvictorContext evictorContext);

    // 定义上下文对象
    public interface EvictorContext {
        long getCurrentProcessingTime();

        MetricGroup getMetricGroup();

        long getCurrentWatermark();
    }
}
